package com.gxc.string;

import java.util.Scanner;

/**
 * 为了便于业务互交，约定一个对输入的字符串中的下划线做统一替换。
 *
 * 具体要求如下：
 *
 * 输入字符串，将其中包含的每一个下划线“_”，使用特殊字符串(^|$|[,+])替换，并输出替换后的结果。
 *
 * 其中的例外场景不做替换，场景如下：
 *
 * 在一堆方括号之内的下划线不做替换
 * 为转义的下划线，即\_则不替换
 * 备注：
 *
 * 调用者已确保，输入表达式的方括号会成对出现，并且方括号会在嵌套。即存在"[xx[yyyy]xxx]"这种形式的字符串
 * 输入字符串的长度范围：[0,10000]
 *
 * 输入描述
 * 一个字符串,例如(_9494)
 *
 * 输出描述
 * 一个字符串，例如((^|$|[,+])9494)
 */
public class ReplaceString {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        scanner.close();

        int index = 0;
        int parentheses = 0;
        StringBuilder builder = new StringBuilder();
        while (index < str.length()) {
            char c = str.charAt(index);
            if (c == '[') {
                parentheses++;
                builder.append(c);
            } else if (c == ']') {
                parentheses--;
                builder.append(c);
            } else if (c == '_'){
                if (parentheses == 0) {
                    if (index>0 && str.charAt(index-1) != '\\') builder.append("(^|$|[,+])");
                    else builder.append(c);
                }
            } else {
                builder.append(c);
            }
            index++;
        }
        System.out.println(builder);
    }
}
